from PIL import Image, ImageDraw, ImageFont

def text_to_image(text, output_path='output01.png', font_path=None, image_size=(200, 100), bg_color='white', text_color='black'):
    # 创建一个新的图像对象
    img = Image.new('RGB', image_size, color=bg_color)
    draw = ImageDraw.Draw(img)

    # 加载字体，默认使用系统字体
    if font_path is None:
        font = ImageFont.load_default()
    else:
        try:
            font = ImageFont.truetype(font_path, size=15)  # 可以调整字体大小
        except IOError:
            print("无法加载字体文件，使用默认字体。")
            font = ImageFont.load_default()

    # 计算文本的尺寸，使用getbbox方法
    bbox = draw.textbbox((0, 0), text, font=font)
    text_width = bbox[2] - bbox[0]
    text_height = bbox[3] - bbox[1]

    # 或者你可以使用textlength方法（如果存在），它只返回宽度
    # text_width = draw.textlength(text, font=font)

    # 计算文本在图像上的位置，使其居中显示
    width, height = image_size
    x = (width - text_width) / 2
    y = (height - text_height) / 2

    # 将文本绘制到图像上
    draw.text((x, y), text, fill=text_color, font=font)

    # 保存图像
    img.save(output_path)
    print(f"图像已保存至: {output_path}")

# 使用函数
text_to_image("Hello中文件\n, World!")